In network communications, “multicast” generally refers to transmitting data to multiple receivers simultaneously using a single transmission stream from a source. Multicast may be contrasted with unicast, which involves transmitting data to multiple receivers using separate transmission streams for each receiver, and broadcast, which entails transmitting data to every node within reach on the network rather than to a list of specific nodes. By sending only a single transmission stream intended for multiple receivers (e.g., using a multicast address for addressing a group of receivers), multicast conserves bandwidth as compared to unicast. Accordingly, multicast is often used in streaming media applications, such as Internet Protocol television (IPTV), stock tickers, streaming digital audio, as well as in a variety of other Internet Protocol (IP) applications.
Multiprotocol Label Switching (MPLS) may be used to provide multicast services over high-performance telecommunications networks. In MPLS, data is directed from one network node to the next based on short path labels rather than long network addresses, avoiding complex lookups in a traditional routing table. The labels in MPLS identify forwarding equivalence classes (FECs). Each FEC designates a set of packets that may be mapped to a label-switched path (LSP), which is a path through an MPLS network set up by a signaling protocol, such as label distribution protocol (LDP) and multicast label distribution protocol (mLDP). In unicast segmented routing using MPLS, the number of LSPs may be reduced by adding more information into a packet. For example, the MPLS header of the packet may be populated with a stack of labels, so that the packet follows a pre-routed path along which the nodes each remove (pop) the top label of the removed packet and forward the packet according to the next label. In such a case, no end-to-end LSP is needed to forward the packet. This approach of populating MPLS headers with label stacks does not work well with multicast, however, as there is typically not enough space in the label stack to encode all of the multicast receivers.